package com.swh.servic;

import com.swh.dao.ArticleDao;
import com.swh.entity.Article;
import com.swh.entity.PageEntity;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: swh
 * @Description:
 * @Date: 2020/11/24 19:21
 * @Version: 1.0
 */
public class ArticleService {
    private ArticleDao articleDao = new ArticleDao();

    public PageEntity<Article> findPage(Integer currPage, String title) {

        PageEntity<Article> pageEntity = new PageEntity<>();
        pageEntity.setCurrPage(currPage);

        //页大小
        Integer pageSize = pageEntity.getPageSize();

        // 计算起始索引
        Integer startIndex = (currPage - 1) * pageSize;

        // 当前页数据
        //文章搜索+分页(根据时间降序排序)
        List<Article> data = articleDao.findPage(title, startIndex, pageSize);

        // 总记录数
        //根据title查询总记录数
        Integer totalCount = articleDao.countByTitle(title);

        // 总页数
        Integer totalPage = totalCount / pageSize == 0 ? totalCount / pageSize : (totalCount / pageSize) + 1;

        pageEntity.setCurrPage(currPage);
        pageEntity.setTotalCount(totalCount);
        pageEntity.setTotalPage(totalPage);
        pageEntity.setData(data);

        return pageEntity;
    }

    public void add(Article article) {
        article.setBrowseCount(0l);
        article.setPublishDate(new Date());
        articleDao.add(article);
    }

    // 浏览量+1
    public void updateBrowserCount(Long id) {
        articleDao.updateBrowserCount(id);
    }

    public Article findById(Long id) {
        return articleDao.findById(id);
    }

    //收藏次数
    public Integer countFavoriteByArticleId(Long id) {
        return articleDao.countFavoriteByArticleId(id);
    }

    //我是否收藏过的文章
    public Boolean isFavorite(Long userId, Long articleId) {
        Integer count = articleDao.isFavorite(userId, articleId);

        return count == 0 ? false : true;
    }

    //已经收藏了；取消收藏
    public void delFunFavorite(Long id, long id1) {
        articleDao.delFunFavorite(id, id1);
    }

    //还没有收藏；收藏
    public void addFavorite(Long id, long id1) {
        articleDao.addFavorite(id,id1);
    }

    public List<Map<String, Object>> findUserFavorite(Long id, Long id1) {
        return articleDao.findUserFavorite(id,id1);
    }

    public PageEntity<Article> favoritePage(Integer currPage, String title, Long userId) {
        PageEntity<Article> pageEntity = new PageEntity<>();
        pageEntity.setCurrPage(currPage);

        // 页大小
        Integer pageSize = pageEntity.getPageSize();

        // 计算起始索引
        Integer startIndex = (currPage - 1) * pageSize;

        // 当前页数据
        List<Article> data = articleDao.favoritePage(userId, title, startIndex, pageSize);

        // 总记录数
        Integer totalCount = articleDao.countByFavorite(userId, title);

        // 总页数
        Integer totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : (totalCount / pageSize) + 1;

        pageEntity.setCurrPage(currPage);
        pageEntity.setData(data);
        pageEntity.setTotalCount(totalCount);
        pageEntity.setTotalPage(totalPage);

        return pageEntity;
        
    }
}
